package global

import (
	"flag"
	"fmt"
	"gopkg.in/ini.v1"
	"os"
	"toyota-server/utils/tools"
)

var AppConfig *ini.File

var StaticPath string
var ConsoleOutput bool
var ConsoleSave bool
var ConsoleOutputLevel int
var ConsoleSaveLevel int

func init() {
	configFile := flag.String("c", "", "配置文件目录")
	flag.Parse()

	addr := tools.GetMacAddr()
	if len(addr) == 0 {
		fmt.Println("当前设备未找到网络适配器")
		tools.Pause()
		os.Exit(1)
	}
	// todo 打包时绑定指定的设备地址
	//if tools.Md5(addr[0]) != "7042b4fe3f65ca1d737b1ada3367f2de" {
	//	fmt.Println("软件未激活, 请联系管理员, 当前设备ID为", tools.Md5(addr[0]))
	//	_ = tools.WriteStringToLog("equip_id: "+tools.Md5(addr[0]), "run_error.log", "")
	//	tools.Pause()
	//	os.Exit(1)
	//}

	if *configFile == "" {
		fmt.Println("使用默认配置文件 ./config.ini")
		*configFile = "./config.ini"
	}
	config, err := ini.Load(*configFile)
	if err != nil {
		fmt.Println("加载配置文件失败: ", err)
		os.Exit(1)
	}
	AppConfig = config
	ReLoadConfig(false)
}

func ReLoadConfig(reload bool) {
	if reload == true {
		err := AppConfig.Reload()
		if err != nil {
			fmt.Println("AppConfig.Reload() error: ", err)
			return
		}
	}
	StaticPath = AppConfig.Section("").Key("static_path").String()
	// 自定义日志是否打印输出
	ConsoleOutput, _ = AppConfig.Section("").Key("console_output").Bool()
	// 自定义日志是否保存到文件
	ConsoleSave, _ = AppConfig.Section("").Key("console_save").Bool()
	// 自定义日志打印输出级别, 条件 >=
	ConsoleOutputLevel, _ = AppConfig.Section("").Key("console_output_level").Int()
	// 自定义日志保存级别, 条件 >=
	ConsoleSaveLevel, _ = AppConfig.Section("").Key("console_save_level").Int()
}
